﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Text;

namespace Sinacor.Tools.Dado
{
    public class Idioma : DadoBase<Sinacor.Tools.Entidade.Idioma>
    {
        

        public override void incluir(Sinacor.Tools.Entidade.Idioma entidade)
        {
            StringBuilder sql = new StringBuilder(@" INSERT INTO TFWDIDIOMA (CODIGOIDIOMA, NOMEIDIOMA, SIGLAIDIOMA) VALUES (" + entidade.Id.Value.ToString() + ", '" + entidade.Descricao + "', '" + entidade.Sigla + "')");
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override void alterar(Sinacor.Tools.Entidade.Idioma entidade)
        {
            StringBuilder sql = new StringBuilder(@" UPDATE TFWDIDIOMA SET NOMEIDIOMA = '" + entidade.Descricao + "', SIGLAIDIOMA = '" + entidade.Sigla + "' where CODIGOIDIOMA = " + entidade.Id.Value.ToString());
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override void deletar(Sinacor.Tools.Entidade.Idioma entidade)
        {
            StringBuilder sql = new StringBuilder(@" DELETE FROM TFWDIDIOMA WHERE CODIGOIDIOMA = " + entidade.Id.Value.ToString());
            ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem> dados = new ResourceAccess<Sinacor.Tools.Entidade.TipoMensagem>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override List<Sinacor.Tools.Entidade.Idioma> consultar(Sinacor.Tools.Entidade.Idioma entidade)
        {
            StringBuilder sql = new StringBuilder(@" SELECT CODIGOIDIOMA As ""Id"", NOMEIDIOMA As ""Descricao"", SIGLAIDIOMA AS ""Sigla"" FROM TFWDIDIOMA WHERE (1=1)");
            if (entidade.Id >= 0)
            {
                sql.Append(" AND CODIGOIDIOMA = " + entidade.Id.Value.ToString());
            }

            if (!string.IsNullOrEmpty(entidade.Descricao))
            {
                sql.Append(" AND NOMEIDIOMA LIKE '%" + entidade.Descricao.Trim() + "%'");
            }

            if (!string.IsNullOrEmpty(entidade.Sigla))
            {
                sql.Append(" AND SIGLAIDIOMA LIKE '%" + entidade.Sigla.Trim() + "%'");
            }


            ResourceAccess<Sinacor.Tools.Entidade.Idioma> dados = new ResourceAccess<Sinacor.Tools.Entidade.Idioma>();
            IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text);
            return dados.getListResult(cmd);
        }

        public object JaEstaCadastrado(Sinacor.Tools.Entidade.Idioma entidade)
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT 1 FROM TFWDIDIOMA WHERE (1=1) AND NOMEIDIOMA = '" + entidade.Descricao.Trim() + "'");
            ResourceAccess<Sinacor.Tools.Entidade.Idioma> dados = new ResourceAccess<Sinacor.Tools.Entidade.Idioma>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                cmd.Connection.Close();
            }
            return retorno;
        }

        public object buscarProximoId()
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT MAX(CODIGOIDIOMA) + 1 FROM TFWDIDIOMA ");
            ResourceAccess<Sinacor.Tools.Entidade.Idioma> dados = new ResourceAccess<Sinacor.Tools.Entidade.Idioma>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                if (retorno == DBNull.Value)
                    retorno = null;
                cmd.Connection.Close();
            }
            return retorno;
        }

        public object jaPossuiTraducao(Sinacor.Tools.Entidade.Idioma entidade)
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT COUNT(CODIGOMENSAGEM) FROM TFWDTRADUCAOMENSAGEM WHERE CODIGOIDIOMA = '" + entidade.Id.ToString() + "'");
            ResourceAccess<Sinacor.Tools.Entidade.Idioma> dados = new ResourceAccess<Sinacor.Tools.Entidade.Idioma>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                cmd.Connection.Close();
            }
            return retorno;
        }
    }
}
